var express = require('express')
var fs = require('fs')
var path = require('path')

//创建子路由对象来统一管理同一系统相关操作的接口（用户登陆，注册，查询等都是用户信息管理相关的）
var userRouter = express.Router()

//分页
userRouter.get('/user/list', (req, res) => {
    //获取get类型的请求参数：req.query
    var { page, count } = req.query;

    //读取userinfo.json中的用户数据，准备下一步的信息比对
    var filepath = path.join(__dirname, '../json/userifo.json')
    var arr = fs.readFileSync(filepath);
    arr = arr.toString() ? JSON.parse(arr) : []

    //分页，利用count(每页显示信息条数)，page(页数)来计算需要返回的数据量
    var newarr = arr.slice((page - 1) * count, page * count);
    //将数据返回客户端
    res.send({ code: 200, message: '请求成功！', list: newarr })
})

//模糊搜索
userRouter.get('/user/search', (req, res) => {
    //接收客户端参数
    var { searchkey } = req.query;

    //读取userinfo.json中的用户数据，准备下一步的信息比对
    var filepath = path.join(__dirname, '../json/userifo.json')
    var arr = fs.readFileSync(filepath);
    arr = arr.toString() ? JSON.parse(arr) : []

    //利用filter方法从用户名的属性里进行过滤，也就是查找是否有符合要求的内容
    var newarr = arr.filter((item) => {
        return item.name.includes(searchkey)
    })
    //将符合要求的数据返回给客户端
    res.send({ code: 200, message: '查询成功！', list: newarr })
})

//登陆
userRouter.post('/user/login', (req, res) => {

    var { phone, password } = req.body

    //读取userinfo.json中的用户数据，准备下一步的信息比对
    var filepath = path.join(__dirname, '../json/userifo.json')
    var arr = fs.readFileSync(filepath);
    arr = arr.toString() ? JSON.parse(arr) : []

    //对客户端的数据进行判断，看是否在已有的用户列表里
    var i = arr.findIndex((item, index) => {
        return item.phone == phone && item.password == password
    })

    if (i != -1) {
        //如果来自客户端的数据符合规则，返回用户信息
        res.send({ code: 200, message: '登陆成功！', userinformation: arr[i], token: '' })
    } else {
        res.send({ code: 400, message: '登陆失败！' })
    }
})

//注册
userRouter.post('/register', (req, res) => {
    //获取到注册的相关参数信息
    var { phone } = req.body;

    //读取userinfo.json中的用户数据，准备下一步的信息比对
    var filepath = path.join(__dirname, '../json/userifo.json')
    var arr = fs.readFileSync(filepath);
    arr = arr.toString() ? JSON.parse(arr) : []

    //判断新用户的信息是否已经存在
    var i = arr.findIndex((item) => {
        return item.phone == phone
    })
    if (i != -1) {
        res.send({ code: 400, message: '该手机号已被注册，注册失败！' })

    } else {
        //不存在就注册成功，同时要将用户的信息添加到userinfo.json文件中(注意：注册时用户一般会填写个人基础信息，其他如是否管理员等可以统一写上)
        arr.push({ ...res.body, ingroup: '编辑组', isadmin: true, status: true })
        fs.writeFileSync(filepath, JSON.stringify(arr), 'utf-8');
        res.send({ code: 200, message: '注册成功！' })
    }
})

//删除
userRouter.post('/delete', (req, res) => {
    //获取手机号 参数
    var { phone } = req.body;
    //读取userinfo.json中的用户数据，准备下一步的信息比对
    var filepath = path.join(__dirname, '../json/userifo.json')
    var arr = fs.readFileSync(filepath);
    arr = arr.toString() ? JSON.parse(arr) : []

    //找到JSON文件中手机号对应的用户
    var i = arr.findIndex((item) => {
        return item.phone == phone;
    })
    if (i != 1) {
        arr.splice(i, 1);
        fs.writeFileSync(filepath, JSON.stringify(arr), 'utf-8');
        //分页
        var newarr = arr.slice(0, 2);
        //返回删除后,第1页的新数据
        res.send({ code: 200, msg: '删除成功!', list: newarr })
    } else {
        res.send({ code: 400, msg: '删除失败!' })
    }
})

//导出这个子路由对象
module.exports = userRouter;